﻿<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">

    <object id="transactionManager"
          type="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate20">
        <property name="DbProvider" ref="DbProvider"/>
        <property name="SessionFactory" ref="NHibernateSessionFactory"/>
    </object>


    <object id="TransactionInterceptor" type="Spring.Transaction.Interceptor.TransactionInterceptor, Spring.Data">
        <property name="TransactionManager" ref="transactionManager"/>
        <property name="TransactionAttributeSource">
            <object type="Spring.Transaction.Interceptor.AttributesTransactionAttributeSource, Spring.Data"/>
        </property>
    </object>
    
    
    <object id="BaseTransactionManager"  type="Spring.Transaction.Interceptor.TransactionProxyFactoryObject" abstract="true">
        <property name="PlatformTransactionManager" ref="transactionManager"/>
        <property name="TransactionAttributes">
            <name-values>
                <add key="Save*" value="PROPAGATION_REQUIRED"/>
                <add key="Set*" value="PROPAGATION_REQUIRED"/>
                <add key="Finish*" value="PROPAGATION_REQUIRED"/>
                <add key="Update*" value="PROPAGATION_REQUIRED"/>
                <add key="Delete*" value="PROPAGATION_REQUIRED"/>
                <add key="Add*" value="PROPAGATION_REQUIRED"/>
                <add key="Get*" value="PROPAGATION_REQUIRED,readOnly"/>
                <add key="Find*" value="PROPAGATION_REQUIRED,readOnly"/>
                <add key="Load*" value="PROPAGATION_REQUIRED,readOnly"/>
                <add key="*" value="PROPAGATION_REQUIRED"/>
            </name-values>
        </property>
    </object>
             
    <!-- Property placeholder configurer for database settings -->
    <object id="UserManager" type="VisualAgile.BLL.UserManager,VisualAgile.BLL">
        <property name="UserDao" ref="UserDao"/>
    </object>
    <object id="ProjectManager" type="VisualAgile.BLL.ProjectManager,VisualAgile.BLL">
      <property name="ProjectDao" ref="ProjectDao"/>
    </object>

    <object id="RoleManager" type="VisualAgile.BLL.RoleManager,VisualAgile.BLL">
      <property name="RoleDao" ref="RoleDao"/>
    </object>

    <object id="ReleaseManager" type="VisualAgile.BLL.ReleaseManager,VisualAgile.BLL">
      <property name="ReleaseDao" ref="ReleaseDao"/>      
    </object>
  
    <object id="IterationManager" type="VisualAgile.BLL.IterationManager,VisualAgile.BLL">
      <property name="IterationDao" ref="IterationDao"/>
    </object>

    <object id="StatusManager" type="VisualAgile.BLL.StatusManager,VisualAgile.BLL">
      <property name="StatusDao" ref="StatusDao"/>
    </object>

    <object id="FeatureManager" type="VisualAgile.BLL.FeatureManager,VisualAgile.BLL">
      <property name="FeatureDao" ref="FeatureDao"/>
    </object>

    <object id="FeelingsManager" type="VisualAgile.BLL.FeelingsManager,VisualAgile.BLL">
      <property name="FeelingsDao" ref="FeelingsDao"/>
    </object>

    <object id="ActualsManager" type="VisualAgile.BLL.ActualsManager,VisualAgile.BLL">
      <property name="ActualsDao" ref="ActualsDao"/>
    </object>

    <object id="LabelManager" type="VisualAgile.BLL.LabelManager,VisualAgile.BLL">
      <property name="LabelDao" ref="LabelDao"/>
    </object>

    <object id="StoryManager" type="VisualAgile.BLL.StoryManager,VisualAgile.BLL">
      <property name="StoryDao" ref="StoryDao"/>
    </object>  

    <object id="TaskManager" type="VisualAgile.BLL.TaskManager,VisualAgile.BLL">
      <property name="TaskDao" ref="TaskDao"/>
    </object>
  
  
    <object id="UserManagerTrans" parent="BaseTransactionManager">
        <property name="Target" ref="UserManager"/>
    </object>
    <object id="ProjectManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="ProjectManager"/>
    </object>
    <object id="RoleManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="RoleManager"/>
    </object>
    <object id="ReleaseManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="ReleaseManager"/>
    </object>
    <object id="IterationManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="IterationManager"/>
    </object>
    <object id="StatusManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="StatusManager"/>
    </object>
    <object id="FeatureManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="FeatureManager"/>
    </object>
    <object id="FeelingsManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="FeelingsManager"/>
    </object>
    <object id="ActualsManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="ActualsManager"/>
    </object>
    <object id="LabelManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="LabelManager"/>
    </object>
    <object id="StoryManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="StoryManager"/>
    </object>   
    <object id="TaskManagerTrans" parent="BaseTransactionManager">
      <property name="Target" ref="TaskManager"/>
    </object>  
</objects>
